package 火车站售票实例;

//多线程操作同一个变量时（ticket)可能会出现安全问题，解决办法：
//1.同步代码块: synchronized (this):用他扩住对变量的操作。在其被一条线程执行时，其他线程无法进去，只有他执行完，才能释放。
public class TicketThread implements Runnable {
    private static final int ticket = 100; //票数 ，private static final表示不允许修改
    private int ticketID = 1;//票号

    @Override
    public void run() {
        while (true) {
            synchronized (this) {
                if (ticketID > ticket) {
                    break;
                }//售完
                System.out.println(Thread.currentThread().getName() + "售出票号:" + ticketID++);
            }
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}